import {fileURLToPath, URL} from 'node:url'

import {ConfigEnv, defineConfig, loadEnv, UserConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import AutoImport from "unplugin-auto-import/vite"

import Components from "unplugin-vue-components/vite";
import {ElementPlusResolver} from "unplugin-vue-components/resolvers";

import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver";

// https://vitejs.dev/config/
export default defineConfig(({mode}: ConfigEnv): UserConfig => {
    console.log("mode ===>  ",mode)
    const env = loadEnv(mode, process.cwd());
    return {
        server: {
            // 允许IP访问
            host: "0.0.0.0",
            // 应用端口 (默认:3000)
            port: Number(env.VITE_APP_PORT),
            // 运行是否自动打开浏览器
            open: true,
            proxy: {
                /** 代理前缀为 /dev-api 的请求  */
                [env.VITE_APP_BASE_API]: {
                    changeOrigin: true,
                    // 接口地址
                    target: env.VITE_APP_API_URL,
                    rewrite: (path) =>
                        path.replace(new RegExp("^" + env.VITE_APP_BASE_API), ""),
                },
            },
        },
        plugins: [
            vue(),
            vueJsx(),
            AutoImport({
                imports: ["vue", "vue-router", "@vueuse/core"],
                resolvers: [
                    // 自动导入 Element Plus 相关函数，如：ElMessage, ElMessageBox... (带样式)
                    ElementPlusResolver(),
                    // 自动导入图标组件
                    IconsResolver({}),
                ],
                eslintrc: {
                    // 是否自动生成 eslint 规则，建议生成之后设置 false
                    enabled: false,
                    // 指定自动导入函数 eslint 规则的文件
                    filepath: "./.eslintrc-auto-import.json",
                    globalsPropValue: true,
                },
                // 是否在 vue 模板中自动导入
                vueTemplate: true,
                // 指定自动导入函数TS类型声明文件路径 (false:关闭自动生成)
                dts: true
            }),
            Components({
                resolvers: [
                    // 自动导入 Element Plus 组件
                    ElementPlusResolver(),
                    // 自动注册图标组件
                    IconsResolver({
                        // element-plus图标库，其他图标库 https://icon-sets.iconify.design/
                        enabledCollections: ["ep"],
                    }),
                ],
                // 指定自定义组件位置(默认:src/components)
                dirs: ["src/components", "src/**/components"],
                // 指定自动导入组件TS类型声明文件路径 (false:关闭自动生成)
                dts: false,
                //dts: "src/typings/components.d.ts",
            }),
            Icons({
                // 自动安装图标库
                autoInstall: true,
            }),
        ],
        resolve: {
            alias: {
                '@': fileURLToPath(new URL('./src', import.meta.url))
            }
        }
    };
});